package com.sise.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sise.entity.ProductInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zj
 */
public interface ProductInfoMapper extends BaseMapper<ProductInfo> {

    /**
     * @param productName productName
     * @return 根据 productName 模糊查询
     */
    List<ProductInfo> findByProductNameLike(@Param("productName") String productName);

    /**
     * @param storeId storeId
     * @return 根据 storeId 查询所有上架商品列表
     */
    List<ProductInfo> findUpAll(@Param("storeId") Integer storeId);

    /**
     * @param storeId storeId
     * @return 根据 storeId 查询所有下架商品列表
     */
    List<ProductInfo> findDownAll(@Param("storeId") Integer storeId);


    /**
     * @param productId productId
     * @param number    number
     * @return 加库存
     */
    int increaseStock(@Param("productId") Integer productId, @Param("number") Integer number);

    /**
     * @param productId productId
     * @param number    number
     * @return 减库存
     */
    int decreaseStock(@Param("productId") Integer productId, @Param("number") Integer number);

    /**
     * @param N 数据
     * @return 查找点赞最多的前N条数据
     */
    List<ProductInfo> findTopNProductInfo(@Param("N") Integer N);

    /**
     * @param productId 商品喜欢数量加一
     */
    void addProductLike(@Param("productId") Integer productId);

    /**
     * @param productId 取消点赞，商品喜欢数量减一
     */
    void cancelProductLike(@Param("productId") Integer productId);

    /**
     * @param N 数据
     * @return 随机生成N条数据
     */
    List<ProductInfo> randomlyGenerateNProductInfo(@Param("N") Integer N);
}
